package xlj.lib.android.base.component;

import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.bumptech.glide.Glide;

import xlj.lib.android.base.utils.IXLogger;
import xlj.lib.android.base.utils.StatusBarUtil;
import xlj.lib.android.base.utils.SystemLogger;

public abstract class BaseActivity extends AppCompatActivity {

    private IXLogger logger;
    private boolean isDestroyed;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        isDestroyed = false;
        super.onCreate(savedInstanceState);

        StatusBarUtil.setTranslucentStatus(this);
        //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
        //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
        if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) {
            //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
            //这样半透明+白=灰, 状态栏的文字能看得清
            StatusBarUtil.setStatusBarColor(this,0x55000000);
        }

        ActivityStack.pushActtivty(this);
        try {
            if (getLayoutRes() != 0) {
                setContentView(getLayoutRes());
            }
            initView();
            initData(getIntent());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        isDestroyed = true;
        ActivityStack.popActivity(this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        initData(intent);
    }

    protected BasePresenter getPresenter() {
        return null;
    }

    protected IXLogger getLogger() {
        if (logger == null) {
            logger = new SystemLogger(getClass().getSimpleName());
        }
        return logger;
    }

    public boolean isDestroyed() {
        return isDestroyed;
    }

    protected abstract void initData(Intent intent);

    protected abstract void initView();

    protected abstract int getLayoutRes();
}
